package model;

import java.awt.Image;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

/**
 * Klasse voor advertentie en het aanmaken / beheren daarvan.
 * @author Dennis
 * @author Yasper
 * @since v1.0
 */

public class Advertentie {
	private String titel;
	private double prijs;
	private String beschrijving;
	private Gebruiker verkoper;
	private Gebruiker koper;
	private String tags;
	private boolean bieden, verkocht;
	private int advertentieID;
	private String categorie;
	private String datum;
	private ImageIcon foto;
	private String wijzigDatum;

	
	/**
	 * @param titel naam van artikel
	 * @param prijs minimum prijs
	 * @param beschrijving beschrijving van advertentie
	 * @param url de plaats van de foto
	 * @param verkoper Gebruiker die verkoopt
	 * @param koper Gebruiker die koopt
	 * @param tags Zoekwoorden
	 * @param bieden Mag er worden geboden, ja/nee?
	 * @param categorie Categorie van product
	 */
	public Advertentie(String titel, double prijs, String beschrijving, Gebruiker verkoper, Gebruiker koper, String tags, boolean bieden, String categorie, String datum, ImageIcon fis, String wijzigDatum){
		this.titel = titel;
		this.prijs = prijs;
		this.beschrijving = beschrijving;
		this.verkoper = verkoper;
		this.koper = koper;
		this.tags = tags;
		this.bieden = bieden;
		this.categorie = categorie;
		this.verkocht = false;
		this.datum = datum;
		this.foto = fis;
		this.wijzigDatum = wijzigDatum;
	}

	//Getters
	/**
	 * geeft titel van advertentie
	 * @author Dennis
	 * @return titel;
	 */
	public String getTitel() {
		return titel;
	}
	
	/**
	 * geeft de prijs
	 * @author Dennis
	 * @return prijs De prijs
	 */
	public double getPrijs() {
		return prijs;
	}
	
	/**
	 * geeft de beschrijving
	 * @author Dennis
	 * @return beschrijving
	 */
	public String getBeschrijving() {
		return beschrijving;
	}

	
	/**
	 * geeft ID van advertentie
	 * @author Dennis
	 * @return advertentieID
	 */
	public int getID(){
		return advertentieID;
	}
	
	/**
	 * geeft aan of artikel is verkocht of niet
	 * @return boolean verkocht
	 */
	public boolean getVerkocht(){
		return verkocht;
	}
	
	/**
	 * geeft verkoper.
	 * @author Dennis
	 * @return verkoper
	 */
	public Gebruiker getVerkoper() {
		return verkoper;
	}
	/**
	 * geeft koper
	 * @author Dennis
	 * @return koper
	 */
	public Gebruiker getKoper() {
		return koper;
	}

	/**
	 * geeft tags
	 * @author Dennis
	 * @return tags
	 */
	public String getTags() {
		return tags;
	}
	
	/**
	 * geeft of er mag worden geboden op product
	 * @author Dennis
	 * @return bieden
	 */
	public boolean getBieden() {
		return bieden;
	}
	
	/**
	 * geeft categorie van advertentie
	 * @author Dennis
	 * @return categorie
	 */
	public String getCategorie() {
		return categorie;
	}
	
	/**
	 * geeft datum van advertentie
	 * @author Dennis
	 * @return datum
	 */
	public String getDatum() {
		return datum;
	}
	
	public ImageIcon getFoto(){
		return foto;
	}

	//Setters	
	/**
	 * Verandert de titel van de advertentie naar de megegeven string
	 * @author Dennis
	 * @param titel De nieuwe titel van de advertentie
	 */
	public void setTitel(String titel) {
		this.titel = titel;
	}
	
	/**
	 * verandert de prijs in de nieuwe prijs.
	 * @author Dennis
	 * @param prijs
	 */
	public void setPrijs(double prijs) {
		this.prijs = prijs;
	}
	
	/**
	 * verandert de beschrijving in de meegeleverde nieuwe beschrijving.
	 * @author 
	 * @param beschrijving De nieuwe beschrijving
	 */
	public void setBeschrijving(String beschrijving) {
		this.beschrijving = beschrijving;
	}
	
	/**
	 * Verandert de ID in de nieuwe ID
	 * @author Dennis
	 * @param newID
	 */
	public void setAdvertentieID(int newID) {
		this.advertentieID = newID;
	}

	/**
	 * Verandert de koper in de meegeleverde gebruiker.
	 * @author Dennis
	 * @param koper
	 */
	public void setKoper(Gebruiker koper) {
		this.koper = koper;
	}
	
	/**
	 * Verandert boolean Verkocht in de meegeleverde boolean
	 * @author Dennis
	 * @param verkocht
	 */
	public void setVerkocht(boolean verkocht){
		this.verkocht = verkocht;
	}
	
	
	/**
	 * Verandert de tags in de meegeleverde String
	 * @author Dennis
	 * @param tags
	 */
	public void setTags(String tags) {
		this.tags = tags;
		
	}
	
	/**
	 * Verandert de boolean bieden in de meegeleverde boolean
	 * @author Jaap
	 * @param checkbox
	 */
	public void setBieden(boolean checkbox) {
		this.bieden = checkbox;
	}
	
	/**
	 * Verandert de categorie in de meegeleverde String
	 * @authar Jaap
	 * @param categorie
	 */
	public void setCategorie(String categorie) {
		this.categorie = categorie;
	}
	
	public void setFoto(ImageIcon fis){
		this.foto = fis;
	}
	
	public void setWijzigDatum(String wijzigDatum){
		this.wijzigDatum = wijzigDatum;
	}
	
	public String getWijzigDatum(){
		return wijzigDatum;
	}
}
